x

Line reflection

Leetcode #356 | Medium | Хэш-таблицы | Математика

Идея

Отражение относительно x=k, считаем сумму minX+maxX и заводим хэш-сет точек, если есть точка (sum-x,y) то отражение существует

Big-O

  • Время O(N)
  • Память O(N)

Код

public class Solution {
    public boolean isReflected(int[][] points) {
        if (points.length <= 1) return true;
        int minX = Integer.MAX_VALUE;
        int maxX = Integer.MIN_VALUE;
        Set<String> set = new HashSet<>();
        for (int[] p : points) {
            minX = Math.min(minX, p[0]);
            maxX = Math.max(maxX, p[0]);
            set.add(p[0] + "#" + p[1]);
        }
        int sum = minX + maxX;
        for (int[] p : points) {
            if (!set.contains((sum - p[0]) + "#" + p[1])) {
                return false;
            }
        }
        return true;
    }
}
Left-click: follow link, Right-click: select node, Scroll: zoom
x